namespace Digitalmes.Domain.Entities.Mes.Integrations;

/// <summary>
/// 过点数据同步至远端服务执行记录。
/// </summary>
[SugarTable("intgr_sync_remote")]
public sealed class IntgrSyncRemote : EntityBase
{
    /// <summary>
    /// SN
    /// </summary>
    [NotNull]
    public string? Sn { get; set; }

    /// <summary>
    /// 执行的工艺步骤 Id
    /// </summary>
    public long StepExecutionId { get; set; }

    /// <summary>
    /// 产线 Id。
    /// </summary>
    public long LineId { get; set; }

    /// <summary>
    /// 产线编号
    /// </summary>
    [NotNull]
    public string? LineCode { get; set; }

    /// <summary>
    /// 工序 Id。没有则为 0。
    /// </summary>
    public long OperationId { get; set; }

    /// <summary>
    /// 工序编号。没有则为空。
    /// </summary>
    [NotNull]
    public string? OperationCode { get; set; }

    /// <summary>
    /// 工位 Id
    /// </summary>
    public long WorkstationId { get; set; }

    /// <summary>
    /// 工位编号
    /// </summary>
    [NotNull]
    public string? WorkstationCode { get; set; }

    /// <summary>
    /// 数据同步状态。
    /// </summary>
    [SugarColumn(SqlParameterDbType = typeof(EnumToStringConvert))]
    public RemoteSyncStatusEnum Status { get; set; }

    /// <summary>
    /// 同步模式。
    /// </summary>
    [SugarColumn(SqlParameterDbType = typeof(EnumToStringConvert))]
    public RemoteSyncModeEnum SyncMode { get; set; }

    /// <summary>
    /// 同步方式，如 Table、HTTP、MQ 等
    /// </summary>
    public string? SyncMethod { get; set; }

    /// <summary>
    /// 执行次数
    /// </summary>
    public int SyncCount { get; set; }

    /// <summary>
    /// 同步失败时的错误消息。
    /// </summary>
    public string? ErrorMessage { get; set; }

    /// <summary>
    /// 数据生成时间
    /// </summary>
    public DateTime CreatedTime { get; set; }

    /// <summary>
    /// 同步执行时的开始时间
    /// </summary>
    public DateTime? StartTime { get; set; }

    /// <summary>
    /// 同步执行的结束时间
    /// </summary>
    public DateTime? EndTime { get; set; }
}
